﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
using CRC.UserControls;
using CRC.Inspecciones.Dominio.Controlador;
using CRC.Inspecciones.Dominio.Clases;

namespace CRC.Inspecciones.Presentacion
{
    public partial class UsrAñadirHojaInspeccionEnBlanco : UserControl
    {
        private ControladorNuevaHojaInspeccion cNHI = new ControladorNuevaHojaInspeccion();
        private CtrlImpreso ctrlNuevImpreso = new CtrlImpreso();

        private LinkedList<ListaHojasInspeccionListener> lstListaHojaInspeccionListener= new LinkedList<ListaHojasInspeccionListener>();

        public UsrAñadirHojaInspeccionEnBlanco()
        {
            InitializeComponent();
            cargarDatos();
        }

        private void cargarDatos() 
        {
            cmbFecha.Value = DateTime.Today;

            try
            {
                cmbTHojaInspeccion.SetData(ctrlNuevImpreso.listarTiposImpreso());
                //cmbTHojaInspeccion.SetData(cNHI.listarTipoHojasInspeccion()); //Cargamos Tipos de hoja
                cmbAnfitrionas.SetData(cNHI.listarAnfitrionas()); //Cargamos anfitrionas (con id del salon)
            }
            catch (Exception ex) 
            {
                MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void usrAddHoja_Load(object sender, EventArgs e)
        {
        }

        private void btnCerrar_Click(object sender, EventArgs e)
        {
            this.Dispose();
        }

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            this.Dispose();
        }

        private void btnAceptar_Click(object sender, EventArgs e)
        {
            Object[] infoHoja = null;

            if (cmbTHojaInspeccion.SelectedIndex != -1 
                && cmbAnfitrionas.SelectedIndex != -1 )
            {
                try
                {

                    Impreso impreso = null;
                    StringBuilder _sContenidoDinamico = new StringBuilder();
                    switch ((String)cmbTHojaInspeccion.SelectedItem)
                    {
                        case "TO-34":
                            //impreso = ctrlNuevImpreso.nuevoTO34((int)cmbAnfitrionas.SelectedKey, _sContenidoDinamico);
                            break;
                        case "S-105":
                            break;
                    }

                    //Llamada a dominio para crear hoja en blanco
                    //infoHoja = cNHI.nuevaHojaEnBlanco(
                    //    (string)cmbTHojaInspeccion.SelectedKey, 
                    //    cmbFecha.Value,
                    //    (int)cmbAnfitrionas.SelectedKey
                    //);

                    //Notificar a escuchadores
                    foreach (ListaHojasInspeccionListener listener in this.lstListaHojaInspeccionListener)
                    {
                    
                        //listener.añadirHoja( (int)infoHoja[0], (DateTime)infoHoja[1],
                        //    (String)infoHoja[2], (String)infoHoja[3], (String)infoHoja[4]
                        //);

                        listener.anadirHoja(impreso, _sContenidoDinamico.ToString());
                    }

                    this.Dispose();
                }
                catch (ApplicationException AEx)
                {
                    MessageBox.Show(AEx.Message, "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
                catch (Exception ex)
                {
                    MessageBox.Show( ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            else { MessageBox.Show("Faltan datos", "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Warning); }

        }

        #region " Listeners "

            public void añadirListaHojaInspeccionListener(ListaHojasInspeccionListener listener)
            {
                this.lstListaHojaInspeccionListener.AddFirst(listener);
            }

            public void qitarListaHojaInspeccionListener(ListaHojasInspeccionListener listener)
            {
                this.lstListaHojaInspeccionListener.Remove(listener);
            }

        #endregion
    }
}
